【服务框架】flask-接口服务
简介
参考:
- https://www.jianshu.com/p/0c3bd0230564
- https://blog.csdn.net/strawbingo/article/details/46458959
- https://juejin.im/entry/5b39e63ae51d455cd054cddd
- https://www.crifan.com/server_start_up_listen_ip_choice_127_0_0_1_vs_0_0_0_0/
实现
import models
from models import Customer
from flask import Flask, request, session, redirect, url_for, render_template, flash,json,jsonify
import os
app = Flask(__name__)
@app.route('/',methods = ['GET','POST'])
def enter_ID():
if request.method == 'POST':
Galactic_ID = request.form['Galactic_ID']
if Customer(Galactic_ID).find():
return redirect(url_for('relationships',ID=request.form.get('Galactic_ID')))
else:
return "Wrong Galactic_ID"
else:
return render_template('Gal.html')
@app.route('/Customer_relationships',defaults={'ID':'Galactic_ID'},methods=['GET','POST'])
@app.route('/Customer_relationships/<ID>',methods=['GET','POST'])
def relationships(ID):
data = Customer(ID).get_relationships()
return render_template('rel.html',data= json.dumps(data))
if __name__ == '__main__':
host = os.getenv('IP','0.0.0.0')
port = int(os.getenv('PORT',5000))
app.secret_key = os.urandom(24)
app.run(host=host,port=port)
import requests,json
req = '{"cust":123, "seeds_path":"liuyan22/lookalike/seeds/tmp_liuyan22_system_lookalike_seed_novel", "extend": 5}'
url = 'http://127.0.0.1:5000/'
r = requests.post(url,data=json.dumps(req))
print(r.json())
curl -H "Content-Type:application/json; charset=UTF-8;Data_Type:msg" -X POST --data '{"cust":123, "seeds_path":"liuyan22/lookalike/seeds/tmp_liuyan22_system_lookalike_seed_novel", "extend": 5}' 'http://10.41.20.196:5000/seeds_extend/'
报错
- "POST / HTTP/1.1" 404 原因:请求地址不存在 解决:在代码中存在路径后缀,在发送请求的时候访问的url没有加后缀
- socket.gaierror: [Errno -2] Name or service not known 原因:app.run()时host配置为0.0.0.0
- socket.gaierror: [Errno 8] nodename nor servname provided, or not known
- PermissionError: [Errno 13] Permission denied
- "POST /seeds_extend HTTP/1.1" 500 原因:函数有问题[外部参数的传参;发送请求时,url必须以/结尾] 解决:检查代码逻辑